﻿#define _CRT_SECURE_NO_WARNINGS 1
///**
//*我们把一个能被表示成某个整数的平方的数称为完全平方数。
//例如4 = 2 * 24=2∗2，16 = 4 * 416=4∗4，所以44，1616是完全平方数。
//现在输入一个整数为xx(0\leq x \leq9990≤x≤999)，请聪明的你判断它是不是由某个完全平方数对10001000取模得到的呢。
//* @param x int整型
//* @return bool布尔型
//*/
//int solve(int x) {
//	// write code here
//	int i = 0;
//	for (i = 1; i<1000; i++)
//	{
//		if (i*i % 1000 == x)
//		{
//			return 1;
//		}
//	}
//	return 0;
//}








////请实现无重复数字的升序数组的二分查找
////给定一个 元素有序的（升序）整型数组 nums 和一个目标值 target  ，
////写一个函数搜索 nums 中的 target，如果目标值存在返回下标，否则返回 - 1
///**
//* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//*
//*
//* @param nums int整型一维数组
//* @param numsLen int nums数组长度
//* @param target int整型
//* @return int整型
//*/
//int search(int* nums, int numsLen, int target) {
//	// write code here
//	if (numsLen == 0)
//	{
//		return -1;
//	}
//	else if (numsLen == 1 && nums[0] == target)
//	{
//		return 0;
//	}
//	else
//	{
//		int sz = 0;
//		int len = 0;
//		while (sz <= numsLen)
//		{
//			len = (sz + numsLen) / 2;
//			if (target<nums[len])
//			{
//				numsLen = len - 1;
//			}
//			else if (target>nums[len])
//			{
//				sz = len + 1;
//			}
//			else if (target == nums[len])
//			{
//				return len;
//			}
//		}
//		return -1;
//	}
//}
//
//






///**
//*
//* @param k int整型 翻滚次数
//* @return double浮点型
//*/
//double circumference(int k) {
//	// write code here
//	double s = k / 6;
//	k %= 6;
//	s *= (4 + 2 * sqrt(3));
//	if (k == 1)
//	{
//		s += 1;
//	}
//	else if (k == 2)
//	{
//		s += (1 + sqrt(3));
//	}
//	else if (k == 3)
//	{
//		s += (3 + sqrt(3));
//	}
//	else if (k == 4)
//	{
//		s += (3 + 2 * sqrt(3));
//	}
//	else if (k == 5)
//	{
//		s += (4 + 2 * sqrt(3));
//	}
//	s *= 3.14159265 / 3.0;
//	return s;
//}






///**所有的长度为n的数中，各个位上的数字之和为m的这些数的和是多少呢。
//给定n和m，求这些数的和。
//* 返回这样的数之和
//* @param n int整型 数的长度
//* @param m int整型 各个为之和
//* @return long长整型
//*/
//long long sum(int n, int m) {
//	// write code here
//	if (n == 1)
//	{
//		return m;
//	}
//	else
//	{
//		long long count = 0;
//		int i = 0, j = 0, k = 0;
//		int s1 = 0;
//		int s2 = 0;
//		int sum = 0;
//		for (i = 1; i<1 * pow(10, n); i++)
//		{
//			s1 = 1 * pow(10, n - 1);
//			s2 = 1 * pow(10, n);
//			sum = i;
//			k = 0;
//			for (j = 1; j <= n; j++)
//			{
//				k += sum % 10;
//				sum /= 10;
//			}
//			if (k == m&& i / s1 != 0 && i / s2 == 0)
//			{
//				count += i;
//			}
//		}
//		return count;
//	}
//}








///**有一个二进制数的字符串，
//想把字符串循环右移k位，
//然后得到一个新的二进制数，
//求这个数的十进制值是多少。
//给定一个二进制字符串str和循环位移位数k，
//返回循环后的二进制数的十进制值。
//
//* 位移后二进制串的十进制值
//* @param str string字符串 二进制字符串
//* @param k int整型 循环位移次数
//* @return long长整型
//*/
//long long rotateRight(char* str, int k) {
//	// write code here
//	int i, j = 0;
//	int len = strlen(str);
//	char temp = 0;
//	long long count = 0;
//	for (i = 0; i<k; i++)
//	{
//		temp = str[len - 1];
//		for (j = len - 1; j>0; j--)
//		{
//			str[j] = str[j - 1];
//		}
//		str[0] = temp;
//	}
//	while (len--)
//	{
//		if (*str == '1')
//		{
//			count <<= 1;
//			count++;
//		}
//		else
//		{
//			count <<= 1;
//		}
//		str++;
//	}
//	return count;
//}